为什么要执行bash变量?
我已经开始在我的Mac(OS X Yosemite 10.10.5)上编写bash脚本。这一定是最愚蠢的问题,但我不知道发生了什么。脚本基本上是:为什么要执行bash变量?,bash,macos,Bash,Macos,我已经开始在我的Mac(OS X Yosemite 10.10.5)上编写bash脚本。这一定是最愚蠢的问题,但我不知道发生了什么。脚本基本上是: #!/bin/bash WORKING_DIR=$(mktemp -d) 我计划稍后使用WORKING_DIR变量作为参考。输出内容如下: My-MacBook-Pro:myfolder me$ ./test.sh usage: mktemp [-d] [-q] [-t prefix] [-u] template ... mktem
#!/bin/bash
WORKING_DIR=$(mktemp -d)
我计划稍后使用WORKING_DIR
变量作为参考。输出内容如下:
My-MacBook-Pro:myfolder me$ ./test.sh
usage: mktemp [-d] [-q] [-t prefix] [-u] template ...
mktemp [-d] [-q] [-u] -t prefix
我不希望执行
mktemp
,我希望它存储在WORKING\u DIR
变量中。这里我做错了什么?命令替换就是这样做的:它立即运行封闭的命令,并捕获输出以供封闭表达式使用(这里,它将其用作表达式右侧的值)
如果要延迟执行,则需要定义一个函数:
working_dir () {
mktemp -d
}
d1=$(working_dir)
d2=$(working_dir)
# etc
这就是命令替换的作用:它立即运行封闭的命令,并捕获输出以供封闭表达式使用(这里,它将其用作表达式右侧的值) 如果要延迟执行,则需要定义一个函数:
working_dir () {
mktemp -d
}
d1=$(working_dir)
d2=$(working_dir)
# etc
您需要为
mktemp
提供一个参数,这就是消息所告诉您的。试试这个:
#!/bin/bash
WORKING_DIR=$(mktemp -dt foo)
根据手册页,您的使用应该可以正常工作,因此我怀疑您可能从其他地方收到此消息
如果未传递任何参数或仅传递了-d标志,则mktemp的行为就如同提供了-ttmp一样
您需要为
mktemp
提供一个参数,这就是消息所告诉您的。试试这个:
#!/bin/bash
WORKING_DIR=$(mktemp -dt foo)
根据手册页,您的使用应该可以正常工作,因此我怀疑您可能从其他地方收到此消息
如果未传递任何参数或仅传递了-d标志,则mktemp的行为就如同提供了-ttmp一样
根据手册页,该用法不应触发该错误。事实上,它在我的MacBook上运行得很好。当你说你不希望它被执行时,你的意思是你不希望它被显示出来吗?哦,我没想到它会被执行。但事实证明,这就是它应该是什么样子,所以不,我正在看的代码更有意义根据手册页,该用法不应触发该错误。事实上,它在我的MacBook上运行得很好。当你说你不希望它被执行时,你的意思是你不希望它被显示出来吗?哦,我没想到它会被执行。但事实证明,这就是它应该是什么样子,所以不,我正在看的代码更有意义谢谢,@chepner!现在有道理了。:)谢谢,@chepner!现在有道理了。:)