我有這些檔案名,在處理特殊字符問題的路徑中實際上有雙引號,我想在保留引號的同時回圈并回顯檔案路徑,這似乎洗掉了它們:
for value in temp/sample."sample.id1".genotypes.txt temp/sample."sample.id2".genotypes.txt; do echo $value; done
我試過這個但沒有運氣:
for value in temp/sample."sample.id1".genotypes.txt temp/sample."sample.id2".genotypes.txt; do echo '${value}'; done
我該怎么做呢?
uj5u.com熱心網友回復:
您需要參考字串以保留雙引號:
for value in 'temp/sample."sample.id1".genotypes.txt' 'temp/sample."sample.id2".genotypes.txt'; do
echo "$value"
done
否則,寫入some."thing"與 相同,some.thing因為 shell 解釋了引號。
uj5u.com熱心網友回復:
你也可以逃避它:
for value in temp/sample.\"sample.id1\".genotypes.txt temp/sample.\"sample.id2\".genotypes.txt; do echo $value; done
uj5u.com熱心網友回復:
對于這樣的事情,我喜歡使用一種稍微不同的方法,這對我來說似乎是一個更好的設計:
# make an array with the data
mapfile -t ary <<"EOF"
temp/sample."sample.id1".genotypes.txt
temp/sample."sample.id2".genotypes.txt
EOF
# use the data from the array
for f in "${ary[@]}"; do
printf '%s\n' "$f"
done
如果您的資料增長,它將使您的生活更輕松,然后您可以非常輕松地將其傳輸到另一個檔案。當然,如果它僅用于一次性使用(例如,您在命名檔案時出錯并且只想重命名它們),那么請學習如何讓 Bash 正確決議引號,如其他答案所示(轉義它們或使用單引號)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/409668.html
標籤:
