1
這3.sh讀取第一個參數指定的文件的內容,並取代在第二參數倒數第二參數由最後參數所指定的字中指定的單詞的所有事件。爲什麼這個bash腳本無法修改文件?
$cat file.txt
Hello NZ! How r u? Hey NZ! How r u?
$./3.sh file.txt NZ Hey Baby
Hello Baby! How r u? Baby Baby! How r u?
下面是我的代碼:
#!/bin/bash
list=($1 $2 $3 $4 $5 $6 $7 $8 $9)
str="`cat ${list[0]}`"
for ((i=1; i<$#-1; i++))
do
str="${str//${list[i]}/${list[i+1]}"
done
echo $str > $1
一個問題是,在str =「$ {str ...」行中有一個'}'太少。你應該使用'file =「$ {1:?}」; shift'來分別捕獲文件名。只要文件很小,這應該可以工作,但是使用'sed'而不是原始''bash'很誘人。 –
在查找匹配時出現錯誤消息'意外的EOF'「'告訴你一個關閉'''無法識別。然後你可以把兩個關閉的'''作爲潛在的問題點,這很快導致@JonathanLeffler指出的錯誤關閉'}'。如果可以的話,儘量發佈錯誤信息。 – dangenet