我是 ubuntu 的新手,我被指派创建下面的 prarg bash shell 脚本。请耐心等待,我会通过提供所有相关示例来尽量让您理解得更清楚。
作业:
1. 修改 prargs 程序,在每个参数前加上其编号。因此,输入prargs a 'b c' d
应该会得到以下输出:
1: a
2: b c
3: d
我遇到的问题是书中的示例通过输入“prargs ab c”来运行以下脚本。当我输入此脚本时,我收到错误:prargs:command not found
。我如何让脚本以这种方式运行?我运行脚本的唯一方法是使用 ./prargs.sh
或bash prargs.sh
。
脚本内容:
while [ "$#" -ne 0 ]
do
echo "$1"
shift
done
因为我无法按照指示运行它,所以我陷入了困境。说明书和书上的内容非常不清楚,我可以在网上找到一些片段,但这里的主要问题是整个代码的语法,我找不到它。
帮忙?谢谢!
答案1
主要问题是脚本名称错误,prargs.sh
而文件名应该是prargs
。第二个问题是顶部应该有一个“shebang”来告诉系统这是一个 bash 脚本:
#!/bin/bash
while [ "$#" -ne 0 ]
do
((Count++))
echo "$Count: $1"
shift
done
笔记:您的脚本缺少1:
、2:
等参数计数。我已使用以下内容添加了缺少的部分:
((Count++))
echo "$Count: $1"
因此当你运行脚本时你会看到:
$ prargs a 'b c' d
1: a
2: b c
3: d
下一个问题是调用prargs
时不指定前面的位置。如果您将脚本放在路径之一中,则无需指定目录即可找到它。要查看当前路径,请使用:echo $PATH
。许多人会在他们的主目录中为个人脚本创建一个路径:
mkdir -p $HOME/bin
之后重新打开终端,将其添加到您的路径中。因此,创建您的脚本并将$HOME/bin/prargs
其标记为可执行文件:
chmod a+x $HOME/bin/prargs
此后,无论您当前的目录是什么,您都可以输入prargs a 'b c' d
。
答案2
为此,必须将脚本放在 shell 可以找到的预定义路径中。
例如,可以按照以下步骤在主目录中创建一个新路径并用它来存储脚本:
- 创建一个具有所需名称的文件夹。
- 在主目录中打开 .bashrc(例如在终端类型 nano .bashrc)。
- 移至文件末尾并复制粘贴以下内容:export PATH="/home/YOUR_USER_NAME/THE_FOLDER_CREATED_FOR_YOUR_SCRIPTS:$PATH"
- 重新启动现在,当你将某些内容放入你创建的文件夹中时,你只能使用名称来运行它
注意:要执行的脚本必须具有执行权限,授予权限的方法很简单,只需使用以下命令:chmod +x FILE_NAME