相关疑难解决方法(0)

如何cat << EOF >>包含代码的文件?

我想使用cat <<EOF >>以下代码将代码打印到文件中:

cat <<EOF >> brightup.sh
!/bin/bash
curr=`cat /sys/class/backlight/intel_backlight/actual_brightness`
if [ $curr -lt 4477 ]; then
   curr=$((curr+406));
   echo $curr  > /sys/class/backlight/intel_backlight/brightness;
fi
EOF
Run Code Online (Sandbox Code Playgroud)

但是当我检查文件输出时,我得到了这个:

!/bin/bash
curr=1634
if [  -lt 4477 ]; then
   curr=406;
   echo   > /sys/class/backlight/intel_backlight/brightness;
fi
Run Code Online (Sandbox Code Playgroud)

我尝试使用单引号,但输出也带有单引号.我该如何避免这个问题?

unix linux heredoc sh

79
推荐指数
4
解决办法
15万
查看次数

以非root用户身份运行gitlab-ci管道作业

我有一个mvn必须以非root用户身份构建的项目,但默认情况下gitlab-ci允许运行者以root用户身份运行.我gitlab.com通过设置gitlab-ci.yml文件来使用跑步者.我尝试创建一个用户并切换到这样:

$ useradd ***
$ su -***
$ whoami
root
Run Code Online (Sandbox Code Playgroud)

它仍然说我是根.我怎么解决这个问题?

maven gitlab gitlab-ci gitlab-ci-runner

6
推荐指数
2
解决办法
2112
查看次数

通过ssh执行perl替换[来自shell脚本的perl one-oneliner]

我正在尝试远程执行此脚本:

perl -i -pe 's/nginx-cache\K(\d+)/ ++($n = $1) /e; s/MYSITE\K(\w+)/ ++($n = $1) /e;' $SITENAME
Run Code Online (Sandbox Code Playgroud)

使用以下解决方案:

ssh -T root@$IPSRV <<EOI
perl -i -pe 's/nginx-cache\K(\d+)/ ++($n = $1) /e; s/MYSITE\K(\w+)/ ++($n = $1) /e;' /etc/nginx/sites-available/$SITENAME"
exit
EOI
Run Code Online (Sandbox Code Playgroud)

我也试过没有ssh的"-T"选项

ssh root@$IPSRV "
> perl -i -pe 's/nginx-cache\K(\d+)/ ++($n = $1) /e; s/MYSITE\K(\w+)/ ++($n = $1) /e;' /etc/nginx/sites-available/$SITENAME"
Run Code Online (Sandbox Code Playgroud)

但不幸的是它不起作用:

syntax error at -e line 1, near "( ="
syntax error at -e line 1, near "( ="
Execution of -e aborted due to …
Run Code Online (Sandbox Code Playgroud)

ssh shell perl

1
推荐指数
1
解决办法
384
查看次数

Bash变量始终为空

以下bash脚本的结果是输出中的"空行"

ssh dev@my_service <<EOF
  START_SERVICE_TIME_IS_UP=124
  echo $START_SERVICE_TIME_IS_UP
  exit  
EOF
Run Code Online (Sandbox Code Playgroud)

无法理解为什么.我希望在输出中看到"124".远程服务器正在运行Red Hat linux.

linux bash heredoc

0
推荐指数
1
解决办法
329
查看次数

使用 Heredoc 在 bash 脚本 sudo 中设置变量

我正在尝试运行一个切换用户的脚本(遵循此答案)。我无法在其中设置变量。我尝试了很多事情,但最基本的是:

sudo -u other_user bash << EOF
V=test
echo "${V}"
EOF
Run Code Online (Sandbox Code Playgroud)

更现实的是,我正在做类似以下的事情:

sudo -u other_user bash << EOF
cd
V=$(ls)
echo "${V}"
EOF
Run Code Online (Sandbox Code Playgroud)

每次我尝试使用该变量时,V它都会被取消设置。如何设置变量?

bash sudo su

0
推荐指数
1
解决办法
1622
查看次数

标签 统计

bash ×2

heredoc ×2

linux ×2

gitlab ×1

gitlab-ci ×1

gitlab-ci-runner ×1

maven ×1

perl ×1

sh ×1

shell ×1

ssh ×1

su ×1

sudo ×1

unix ×1