我有一個大約需要900個cURLs的文本文件才能運行。它們非常多毛,有大量的引號,撇號和其他特殊字符。Bash腳本捲曲命令產生與手動運行不同的結果
運行他們,我一直在試圖通過列表來創建一個bash腳本循環:
#!/bin/sh
OLDIFS=$IFS
IFS="&&&"
echo "getting started"
cat staging_curl_script|while read line
do
$line
done
echo "done"
不幸的是我有一個不尋常的問題。在命令提示符下運行正常的命令會返回「文件名太長」錯誤。我從腳本中迴應了這些命令,並將它們與手動運行的命令進行了比較,它們是相同的。
任何想法爲什麼我看到不同的結果?
不要使用'echo'像這樣的事情調試。使用'set -x'。文件中的行是* full * curl命令行來執行? 「&&&」是一個實際值還是「安全」的東西,不會混淆內容?你幾乎可以肯定的想在'read'調用中加入'-r'。 (你也可以將'IFS'的改變本地化爲'read'調用,同時IFS = read -r line') –
如果原始文件是全部有效的shell命令(一行一行)爲什麼不只是將該文件作爲腳本來執行並完成它呢?嘗試將命令填充到shell變量中通常是非啓動器。有關它的討論,請參閱http://mywiki.wooledge.org/BashFAQ/050。 –