shopt在命令行中工作,在脚本中运行时找不到

峰度

我正在写一个脚本围绕复制一些文件,并尝试使用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 docker bash 脚本中运行时找不到命令

Xcode正常运行时,Swift命令行无法正常工作-找不到repl_swift

“ps -ef”在php脚本与命令行中运行时返回不同的结果

通过命令行运行时找不到或加载主类

开始:通过源代码运行时,在简单的awk脚本中找不到命令

从 Dockerfile 运行时在 Docker 中找不到命令

为什么我在rpm脚本中出现“ [...] 2>>(tee -a $ logfile>&2)[...]”的语法错误,但是从命令行运行时却找不到语法错误,以及如何使其正常工作?

在 Delphi 中运行时如何运行命令行程序并发送密钥?

从Cron运行时,Python中的Popen返回不同的输出(与命令行)

尝试在命令行中运行时,javascript 程序的输出为“未定义”

OSX使命令行应用程序在运行时在Dock中显示图标

PHPUnit:在命令行中运行时,显示代码覆盖率吗?

从命令行正常运行时,为什么gdb在eclipse中不起作用?

在命令行中施加的时间限制似乎并不限制运行时间

在Qt Creator与命令行中编译C ++项目-生成的.exe不同的运行时

升级 Arangodb - 在 Docker 中运行时如何添加命令行标志?

在sudo中运行时找不到命令,但在以普通用户身份运行时提供输出

系统找不到指定的文件,但直接在命令行中工作

从命令行bash运行时,无法从crontab运行bash脚本

以sudo运行时找不到命令

找不到在Shell脚本中运行的命令

从 WSL 中的 bash 脚本运行时,CMake 找不到源目录

Swift:从命令行运行时,UI 测试看不到资产

从命令行运行而不是在Netbeans IDE中运行时,Maven Java应用程序崩溃

MySQL查询可以在命令行中正常运行,但是在php中运行时却报错

从命令行运行时,Powershell脚本未按预期记录日志

从命令行运行时如何在spring boot应用程序中传递命令行参数

从IDLE运行时,Python脚本可以看到Y:/驱动器,但从命令行看不到

Python在Linux中运行时找不到模块