在Bash中,以下函数将导出的ENV变量传递给子进程,同时声明一个局部变量w/同名。在Zsh有等价物吗?
我不想使用subshells和read-only variables。目标是避免意外重写子进程使用的变量。我不知道在子进程中使用了哪些ENV变量,也不知道调用进程中存在哪些ENV变量。
在Zsh,local +x的行为与在Bash的行为不同。Zsh似乎使用local或local +x取消变量设置。(+x in local +x在Zsh中被忽略)Bash使用local +x传递原始变量
function the_func {
local +x MY_VAR="new value
我希望找到我所有的bash脚本(我已经积累了其中的许多),并通过bash -n自动运行它们。
这么快的方法是什么?我希望grep只匹配其第一个非空行以#!/bin/sh或#!/usr/bin/env sh或#!/usr/bin/env bash或#!/bin/bash开头的文件.
一个有用的答案当然是
for file in *; do
if head -n 5 $file | grep "#!.*sh$" > /dev/null; then
bash -n $file
fi
done
但是,为了“正确性”,我如何才能合理地在上执行gre
我想在heroku的docker镜像上安装rclone,以便能够将Rclone与python telegram bot一起使用。我制作了一个heroku.yml文件。
build:
docker:
worker: Dockerfile
run:
worker: bash start.sh
和start.sh as
python3 -m bot
和Dockerfile as
FROM ubuntu:18.04
WORKDIR /usr/src/app
RUN docker pull rclone/rclone:latest
RUN docker run rclone/rclon
我试图复制一个名为setup_envs.sh的bash文件,它位于我的Dockerfile的同一个目录中。
在创建Dockerfile之后,如何只运行这个bash文件一次?
我的代码是(在Dockerfile末尾):
RUN mkdir -p /scripts
COPY setup_env.sh /scripts
WORKDIR /scripts
RUN chmod +x /scripts/setup_env.sh
CMD [./scripts/setup_env.sh]
当前错误: /bin/bash: [./scripts/setup_env.sh]: No such file or di
我有下面的脚本托管在Github上:
该文件的内容如下:
#!/usr/bin/env bash
set -e;
cd "$HOME"
mkdir -p "$HOME/.quicklock/locks"
curl https://rawgit.com/oresoftware/quicklock/master/install.sh > "$HOME/.quicklock/ql.sh"
echo "To complete installation of 'quicklock' add the following li
当直接粘贴到bash终端(我显式地调用bash,bash版本:4.4.19(1)-release (x86_64-pc-linux-gnu))时,以下内容可以工作
for filename in /home/dean/Downloads/!(*example).txt; do
echo "${filename}"
done
此命令回显文件名中没有“示例”的所有txt文件。
但是,当我将其转换为一个名为temp.sh的脚本时,chmod +x temp.sh并通过./temp.sh调用它:
#!/usr/bin/env bash
for filename in /hom
我正在尝试在zsh (名为setup_env.sh存储在~/中)中获取第三方脚本,该脚本在开头有以下几行,以防止意外执行:
#!/bin/sh
# Guard the script against execution - it must be sourced!
echo $0 | egrep 'setup_env.sh' > /dev/null
if [ $? -eq 0 ]; then
echo ""
echo "ERROR: the setup file must be SOURCED, NOT EXECUTED in a shell.
英特尔提供的oneAPI工具包需要获取bash脚本,以便向$PATH和其他环境变量中添加多个可执行文件/库。为此,文档指示运行提供的脚本,如
source setvars.sh
但是,在一个新的Ubuntu20.04系统上(由Intel OneAPI支持),我得到以下错误。
$ source setvars.sh
:: ERROR: No env scripts found: No "env/vars.sh" scripts to process.
This can be caused by a bad or incomplete "--config" fi