如何让 shell 程序以脚本名称运行?和脚本帮助

如何让 shell 程序以脚本名称运行?和脚本帮助

我是 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.shbash 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 可以找到的预定义路径中。

例如,可以按照以下步骤在主目录中创建一个新路径并用它来存储脚本:

  1. 创建一个具有所需名称的文件夹。
  2. 在主目录中打开 .bashrc(例如在终端类型 nano .bashrc)。
  3. 移至文件末尾并复制粘贴以下内容:export PATH="/home/YOUR_USER_NAME/THE_FOLDER_CREATED_FOR_YOUR_SCRIPTS:$PATH"
  4. 重新启动现在,当你将某些内容放入你创建的文件夹中时,你只能使用名称来运行它

注意:要执行的脚本必须具有执行权限,授予权限的方法很简单,只需使用以下命令:chmod +x FILE_NAME

相关内容