这让我很抓狂。我有一个非常简单的脚本
#!/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/jame/changeList.txt,成功了。我尝试
file_name=~/changeList.txt
[ -f $file_name ] && echo "true" || echo "false"
从我的终端,它返回 true。
我在 wsl 2 上使用 Ubuntu,并以 james 身份登录。
答案1
波浪号扩展发生在变量扩展之前。在赋值中,右侧值会经历波浪号扩展,因此变量会被赋予完整路径。man bash
详情请参阅。