gpt4 book ai didi

linux - bash 脚本中的自定义参数

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:13:43 27 4
gpt4 key购买 nike

我必须编写一个脚本来根据从命令行传递的参数执行各种任务。脚本的名称是“safeDel.sh”到目前为止,我所拥有的如下:

#!/bin/bash

arg=$1
r_file=$2

if [$arg == '-l']
then
#List all files in trash can
echo '$arg'

elif [$arg == '-r']
then
#recover r_file
echo '$arg'

elif [$arg == '-d']
then
#Delete (interactively?) the contents of trash directory
echo '$arg'

elif [$arg == '-t']
then
#Display total usage in bytes of trash directory
echo '$arg'

fi

在这个阶段,我只是尝试使用 if/else 语句打印出适当的参数。但是,如果我输入“./safeDel.sh -r”,输出是:

./safeDel.sh: 第 6 行 [-r 命令未找到]

./safeDel.sh: 第 11 行 [-r 命令未找到]

./safeDel.sh: 第 16 行 [-r 命令未找到]

./safeDel.sh: 第 21 行 [-r 命令未找到]

修改我的代码以便让脚本根据传递的参数执行某些任务的正确方法是什么?

最佳答案

您可能希望考虑使用内置的 bash shell getopts。我假设只有 -r 选项需要 r_file,即 r 之后的 :

#!/bin/bash

while getopts lr:dt arg
do
case $arg in
i) #List all files in trash can
echo "$arg" # Use double quotes, not single
;;
r) #recover r_file
r_file="$OPTARG"
echo "$arg"
echo "$r_file"
;;
d) #Delete (interactively?) the contents of trash directory
echo "$arg"
;;
t) #Display total usage in bytes of trash directory
echo "$arg"
;;
esac
done

在命令行上(其中 $ 是提示符):

$ ./gash.sh -r fred.txt
r
fred.txt

$ ./gash.sh -r
./gash.sh: option requires an argument -- r

$ ./gash.sh -x
./gash.sh: illegal option -- x

$ ./gash.sh -dr fred.txt
d
r
fred.txt

关于linux - bash 脚本中的自定义参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52736223/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com