Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.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
Macos 如何使bash脚本在OSX上可移植_Macos_Bash - Fatal编程技术网

Macos 如何使bash脚本在OSX上可移植

Macos 如何使bash脚本在OSX上可移植,macos,bash,Macos,Bash,第一次在这里问问题。 编程新手,所以如果我的术语有点不对劲,请友好一点 我在OSX工作 我有一个bash脚本,其中有一个名为pythonb的函数,它执行一个python文件 我试图使其可移植,但除非我将python脚本的完整路径放在函数调用中,否则无法使其工作 我认为,由于主bash.sh与python文件位于同一目录中,因此不需要说明python脚本的目录。 我尝试在函数中使用python./foo.py和python foo.py,但仍然得到一个python:无法打开文件'foo.py':[

第一次在这里问问题。 编程新手,所以如果我的术语有点不对劲,请友好一点

我在OSX工作

我有一个bash脚本,其中有一个名为pythonb的函数,它执行一个python文件

我试图使其可移植,但除非我将python脚本的完整路径放在函数调用中,否则无法使其工作

我认为,由于主bash.sh与python文件位于同一目录中,因此不需要说明python脚本的目录。 我尝试在函数中使用python./foo.py和python foo.py,但仍然得到一个python:无法打开文件'foo.py':[Errno 2]没有这样的文件或目录。我如何使这个便携?提前谢谢大家

#!/bin/bash
function dothis {
    filename=$(date +"%m-%d-%y|||%H%M%S")
    dothis -x $filename.png
    curl -T $filename.png -u beast:password ftp
}
function sayit {
    say " I wish I knew more about all this"
}

function pythonb {
   python /volumes/FUN/sexy/morefun/foo.py
}

dothis
sayit
pythonb
exit

您可以从$0(当前脚本的名称)学习完整路径,而不是硬编码完整路径:

python "$(dirname "$0")/foo.py"

是的,您应该使用所有这些引号

您在
dothis
函数中有无限递归。如果您是bash和编程新手,可能值得指出的是,您可以在第一行末尾添加“-xv”来帮助调试脚本,如下所示/bin/bash-xv您还可以在“python”行之前添加一行,如“pwd”和/或“ls”,以查看您是否在您认为的位置,以及您希望显示的文件是否存在。谢谢大家。祝你有一个美好的一天。一般来说,这实际上很难做到——看看有哪些选择和解释会出错。