gpt4 book ai didi

linux - 命令行参数有问题

转载 作者:太空宇宙 更新时间:2023-11-04 12:29:12 25 4
gpt4 key购买 nike

欢迎大家,我需要提示用户输入“all, long, human or alh”。我已经开发了一些代码但是有一个错误。我已经使用 shellcheck.net 检查我的代码的语法是否合适。

程序本身应提供文件和目录列表(基于收到的命令行参数),如果未选择上述选项之一,还会显示错误消息。

  • “全部”- 不隐藏以 . 开头的条目。
  • “长”- 使用长列表格式
  • “人性化”——使用长列表格式和人类可读的打印尺寸格式
  • “alh”——做以上所有事情

这是我的代码:

read -p "Please enter all, long, human or alh: " userInput

if [ -z "$userInput" ];
then
print f '%s/n' "Input is not all, long human or alh"
exit 1
else
printf "You have entered %s " "$UserInput"
fi

代码本身可以工作,但是它不会根据所选参数显示任何目录列表。

输出:

Please enter all, long, human or alh: all
You have entered all

最佳答案

我会使用 case 命令

#!/bin/bash

read -p "Please enter all, long, human or alh: " userInput

case "$userInput" in
(all) flags=a;;
(long) flags=l;;
(human) flags=lh;;
(alh) flags=alh;;
(*) printf '%s\n' "Input is not all, long human or alh"
exit 1;;
esac

ls -$flags

或者,您可以将标志存储在关联数组中:

#!/bin/bash

read -p "Please enter all, long, human or alh: " userInput

declare -A flags
flags=([all]=a
[long]=l
[human]=lh
[alh]=alh
)

flag=${flags[$userInput]}
if [[ -z $flag ]] ; then
printf '%s\n' "Input is not all, long human or alh"
exit 1
fi

ls -$flag

关于linux - 命令行参数有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43760759/

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