如何修改Bash脚本使其类似ls/dir命令,支持输出指定目录内容信息
Bash脚本修改方案
你可以通过接收命令行目录参数、兼容无参数默认使用当前目录的逻辑来实现需求,修改后的脚本如下:
#!/bin/bash # 读取第一个输入参数作为目标目录,无参数时默认使用当前目录 target_dir="${1:-.}" # 校验目标目录合法性(可选,优化健壮性) if [ ! -d "${target_dir}" ]; then echo "错误:${target_dir} 不是有效存在的目录" >&2 exit 1 fi # 遍历目标目录下的所有条目 for entry in "${target_dir}"/* do # ${entry##*/} 用于去除路径前缀,仅输出文件名/目录名 echo "${entry##*/}" done
使用说明
- 直接执行脚本:
./your_script_name.sh,输出当前工作目录的内容,和原脚本效果一致 - 指定目录执行:
./your_script_name.sh /目标/目录/路径,输出指定目录的内容
关键语法说明
${1:-.}是Shell参数扩展语法:当第一个入参$1不存在或为空时,默认取值为.(当前目录)- 变量外层添加双引号是为了兼容名称包含空格、特殊字符的文件/目录
${entry##*/}是Shell字符串截断语法:从字符串头部删除最长的匹配*/的内容,实现去除路径前缀的效果
内容的提问来源于stack exchange,提问作者nobody
相关产品推荐
相关产品推荐

