脚本找不到文件
Script cannot find file
我正尝试在 Mac/Linux 机器上 运行 一个名为 myscript.command
的脚本。
#!/bin/sh
echo 'Starting'
chmod 777 ./myfile
问题是,当我到达 chmod
部分时,我得到了这个输出:
chmod ./myfile: No such file or directory
但是 myscript.command
和 myfile
都在同一个文件夹中。
编辑
当我启动脚本时,脚本的位置似乎没有被保留。我怎样才能保留位置?
正在通过双击启动脚本 UI。
你也可以这样开始..
#!/bin/sh
echo 'Starting'
if [ -f ./myfile ]; then
chmod 777 ./myfile
else
echo "File does not exist:"
ls -l
fi
$0
为了将当前工作目录更改为脚本目录,请将以下命令紧跟在 shebang 行之后:
cd "$(dirname "[=10=]")"
[=13=]
变量扩展为脚本名称(脚本路径),dirname
returns 脚本目录路径。
检测当前工作目录
您可以使用pwd
命令获取当前工作目录。如果您实际上是 运行 Bash(我不确定,因为代码中的 shebang 指向 /bin/sh
),您可以使用内置的 $PWD
变量:
PWD
The current working directory as set by the cd
builtin.
将脚本的路径存储到变量中
或者,将目录路径保存到变量中,并在脚本中使用它,例如:
dir="$(cd $(dirname "[=11=]"); pwd)"
chmod 770 "$dir/somefile"
双引号
注意双引号的使用。双引号防止重新解释特殊字符。这也是将包含空格的字符串作为单个单词传递的方法:
dir="some directory name"
cd "$dir"
没有双引号的单词被解释为单独的参数。
我正尝试在 Mac/Linux 机器上 运行 一个名为 myscript.command
的脚本。
#!/bin/sh
echo 'Starting'
chmod 777 ./myfile
问题是,当我到达 chmod
部分时,我得到了这个输出:
chmod ./myfile: No such file or directory
但是 myscript.command
和 myfile
都在同一个文件夹中。
编辑
当我启动脚本时,脚本的位置似乎没有被保留。我怎样才能保留位置?
正在通过双击启动脚本 UI。
你也可以这样开始..
#!/bin/sh
echo 'Starting'
if [ -f ./myfile ]; then
chmod 777 ./myfile
else
echo "File does not exist:"
ls -l
fi
$0
为了将当前工作目录更改为脚本目录,请将以下命令紧跟在 shebang 行之后:
cd "$(dirname "[=10=]")"
[=13=]
变量扩展为脚本名称(脚本路径),dirname
returns 脚本目录路径。
检测当前工作目录
您可以使用pwd
命令获取当前工作目录。如果您实际上是 运行 Bash(我不确定,因为代码中的 shebang 指向 /bin/sh
),您可以使用内置的 $PWD
变量:
PWD
The current working directory as set by thecd
builtin.
将脚本的路径存储到变量中
或者,将目录路径保存到变量中,并在脚本中使用它,例如:
dir="$(cd $(dirname "[=11=]"); pwd)"
chmod 770 "$dir/somefile"
双引号
注意双引号的使用。双引号防止重新解释特殊字符。这也是将包含空格的字符串作为单个单词传递的方法:
dir="some directory name"
cd "$dir"
没有双引号的单词被解释为单独的参数。