Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么要执行bash变量?_Bash_Macos - Fatal编程技术网

为什么要执行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

我已经开始在我的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 ...
       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!现在有道理了。:)