這讓我抓狂。我有一個非常簡單的腳本
#!/bin/bash
read -p "Enter changeList.txt file name: " file_name
if [ -f $file_name ]; then
echo "Reading File..."
cat $file_name | grep "Change " | cut -d ' ' -f 2
echo "Process complete"
else
echo >&2 "File Note Found."
exit 1
fi
echo "Exiting..."
exit 0
我向它傳遞了一個檔案 ~/changeList.txt,但失敗了。我將其傳遞給/home/james/changeList.txt,並且它有效。我嘗試
file_name=~/changeList.txt
[ -f $file_name ] && echo "true" || echo "false"
從我的終端返回 true。
我在 wsl 2 上使用 Ubuntu,並且以 james 登入。
答案1
波形符擴充發生在變數擴充之前。在賦值中,右側值會進行波形符擴展,因此變數會被指派完整路徑。man bash
詳情請參閱。