Richard Tsai
Jul 31, 2019

Linux cat 建立shell scripts 時心得分享

今天在用 cat 指令寫 scripts 發生了一件事

原先的scripts, 如下

#!/bin/bash
i="0"
while [ $i -lt 1 ]
do
mpirun -n 24 -f ./hosts ./xhpl
i=$((i+1))
done
EOF

我用cat 的方式去建立一個新檔

cat > /nfs/projects/test << EOF
#!/bin/bash
i="0"
while [ $i -lt 1 ]
do
mpirun -n 24 -f ./hosts ./xhpl
i=$((i+1))
done

結果不能執行??!!

後來和原先的檔案做diff, 畫面如下,

原來是$ 被拿掉了.

所以正確寫法如下, 記得要用跳脫字元, 將原來的保留字變成字串

cat > /nfs/projects/hpl_test_c << EOF
#!/bin/bash
i="0"
while [ \$i -lt 1 ]
do
mpirun -n 24 -f ./hosts ./xhpl
i=\$((i+1))
done
EOF

另外, 分享一下幾個我在使用cat 的心得

  1. 若原先檔案已存在, 要增加一些資料在後面, 例如在 /etc/hosts 要加新的主機, 可以這樣做 ( 重導字元 >>的應用)
cat >> /etc/hosts << EOF
172.16.10.1 host1
172.16.10.2 host2
EOF

2. 若是要新增一個檔案, 可以這樣做 ( 重導字元>的應用)

cat > /tmp/test << EOF
This is a test file.
EOF
Richard Tsai
Richard Tsai

Written by Richard Tsai

人的大腦是用來思考, 解決問題, 不是拿來當記事本

No responses yet