在我去的时候添加评论以询问具体问题:
设置字符串时是单引号还是双引号?
echo "Starting..."
我是否需要使用;
终止该行?
TARGET_DIR="~/Downloads"
我无法让$TARGET_DIR
扩展,尝试过引号,使用$etc
进行扩展,
是否有规范的初学者指南介绍这些类型的问题
他们以正确的方式,而不是它与背部抽搐和多行一起工作的力量?
LAST_DOWNLOADED_FILE=$(ls -t $TARGET_DIR | head -n1)
echo "Your newest file in $TARGET_DIR is: $LAST_DOWNLOADED_FILE"
在Mac上运行时,我得到:
ls: ~/Downloads: No such file or directory
Your newest file in ~/Downloads is:
尝试作为一个班轮:
me@compy $FOO="~/Downloads"; echo $(FOO); ls -t $FOO | head -n1
-bash: FOO: command not found
答案 0 :(得分:4)
你需要:
TARGET_DIR=~/Downloads
即。将波浪号~/
保持在引号之外,否则shell不会展开它,~
将按字面处理。
答案 1 :(得分:0)
~
符号被shell视为文字。您需要将其保留在引号之外,如答案中建议的anubhava或使用eval
进行插值。
$ TARGET_DIR="~/tmp"
$ echo $TARGET_DIR
~/tmp
$ eval echo $TARGET_DIR
/home/jaypalsingh/tmp
注意:在考虑将其作为选项之前,请务必阅读eval
的所有 pros and cons 。