如何执行指定目录中随机选出的脚本文件?
执行指定目录中的随机脚本方法
方法一:结合已有命令拼接完整路径执行
你可以通过命令替换获取随机文件名,拼接上脚本所在的完整路径后直接执行。如果脚本本身没有设置可执行权限,用bash或sh调用执行:
bash "/home/sepinto/EML-Samples/scripts/regular/$(ls -1 /home/sepinto/EML-Samples/scripts/regular | sort -R | head -1)"
如果脚本已经通过chmod +x设置了可执行权限,也可以直接运行:
"/home/sepinto/EML-Samples/scripts/regular/$(ls -1 /home/sepinto/EML-Samples/scripts/regular | sort -R | head -1)"
用双引号包裹完整路径是为了兼容文件名包含空格、特殊字符的情况。
方法二:更安全的可执行脚本筛选(推荐)
如果只想随机执行已设置可执行权限的脚本,用find命令更可靠,能避免处理非可执行文件或特殊文件名的问题:
$(find /home/sepinto/EML-Samples/scripts/regular -maxdepth 1 -type f -executable | sort -R | head -1)
-maxdepth 1确保只查找目标目录下的文件,不遍历子目录;-type f指定只找普通文件;-executable筛选出有可执行权限的文件。
注意事项
- 如果脚本没有可执行权限,除了用
bash调用外,也可以批量给目录下的脚本添加权限:chmod +x /home/sepinto/EML-Samples/scripts/regular/* - 尽量避免使用包含空格、引号等特殊字符的脚本文件名,否则需要确保命令中正确用引号包裹路径。
内容的提问来源于stack exchange,提问作者Sergio Pinto
相关产品推荐
相关产品推荐

