我正在写一个脚本围绕复制一些文件,并尝试使用shopt -s dotglob
,使CP复制点文件像.jshint
和诸如此类的东西。
我可以shopt -s dotglob
直接在bash提示符下运行,没有错误。但是,运行脚本会引发错误:
script.sh: 81: script.sh: shopt: not found
我正在使用shebang标头在bash shell中运行此脚本#!/usr/bin/env bash
。错误行:
shopt -s dotglob
cp -r $TEMP/img/* $TARGET/img/
cp -r $TEMP/js/* $TARGET/js/
cp -r $TEMP/less/* $TARGET/less/
在Google上找不到任何有用的东西,知道这里的问题是什么?
要从评论中得出答案:
许多出于习惯的人使用sh
而不是来运行脚本bash
。如果要考虑可移植性,那么这是一个好习惯,但是许多人这样做是因为他们在复制自己见过的内容而没有理解。
除非您的脚本需要在非桌面Linux系统上运行(例如,在Android设备上运行shell脚本是完全不同的),否则我建议一开始使用Bash shebang行:
#!/bin/bash
该行是脚本的第一行,它确定调用哪个解释器(如bash或sh的外壳,Python等)来执行该解释器。如果使用上面的命令行,则假定您使用默认的shell,您将获得与命令行相同的行为(几乎)。如果出于可移植性或首选项的原因,您使用了不同的shebang行,请注意,即使您引用的外壳程序是指向Bash的符号链接,也必须查阅所引用的外壳程序的文档。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句