相关疑难解决方法(0)

检查Bash脚本是否与sh兼容

我有一个定义它的脚本#!/bin/bash,我想检查这个脚本是否兼容#!/bin/sh.

有办法吗?

bash shell scripting sh

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

Shell脚本中的“源”命令不起作用

我有一个要在Centos 7中获取的文件。如果这样做,它可以正常工作:

$ source set_puregev_env
Run Code Online (Sandbox Code Playgroud)

但是,如果我将其放在shell脚本中,它将无法正常工作。

$ sh xRUN 
xRUN: line 3: source: set_puregev_env: file not found
Run Code Online (Sandbox Code Playgroud)

这是我的shell脚本:xRUN

#!/bin/bash

source set_puregev_env
Run Code Online (Sandbox Code Playgroud)

谁能告诉我我可能做错了什么,或者想念吗?

bash shell sh command-line-interface

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

/ bin/sh:1:错误的替换Makefile

我编写了一个脚本来查找所有正在运行的具有特定名称的docker容器,当我直接将它输入到我的终端时它可以工作但是只要我把它放到Makefile就会抛出一个错误

/ bin/sh:1:错误的替换

这是makefile中的脚本:

remote: FORCE
   docker ps -q --filter name=$$(tmp=$${PWD##*/} && printf "%s_workspace" "$${tmp//./}")
Run Code Online (Sandbox Code Playgroud)

为了澄清name =正在做什么之后,它正在尝试获取当前文件夹名称并删除所有.并将其附加到我的容器名称即工作空间.

bash shell makefile docker

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

Shell 命令不会在 Docker 构建中运行

当我在容器内时,会发生以下情况:

pip uninstall -y -r <(pip freeze)

然而,当我尝试在 Dockerfile 中执行相同操作时,如下所示:

RUN pip uninstall -y -r <(pip freeze)

我得到:

------
 > [ 7/10] RUN pip uninstall -y -r <(pip freeze):
#11 0.182 /bin/sh: 1: Syntax error: "(" unexpected
------
executor failed running [/bin/sh -c pip uninstall -y -r <(pip freeze)]: exit code: 2
Run Code Online (Sandbox Code Playgroud)

我如何重写这个命令才能让它满意?

编辑:

我正在使用这个解决方法。然而仍然对一句话答案感兴趣

RUN pip freeze > to_delete.txt
RUN pip uninstall -y -r to_delete.txt
Run Code Online (Sandbox Code Playgroud)

linux bash docker

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

sh - 通过分隔符拆分字符串

s='id;some text here with possible ; inside'
IFS=';' read -r id string <<< "$s"
echo "$id"
Run Code Online (Sandbox Code Playgroud)

错误

restore.sh: 2: restore.sh: Syntax error: redirection unexpected
Run Code Online (Sandbox Code Playgroud)

bash版本 GNU bash, version 4.2.37(1)-release (x86_64-pc-linux-gnu)

linux bash sh herestring

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

b/w Bash和Shell脚本有什么区别

我已经为UNIX和Windows编写了近3年的脚本.我一直对这两个术语感到困惑,有一段时间我认为bash脚本是windows cmd脚本,而shell脚本是UNIX脚本,但我知道这是不对的.那么这两个术语有什么区别:BASH和Shell脚本?

linux bash shell scripting cmd

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

sudo使用什么shell

我道歉,因为这必须是其他人提出的问题,但似乎谷歌证明.我正在试图弄清楚调用了什么shell,因为我遇到了一个不一致的问题.如果我sudo,我的脚本不起作用,但是如果我的话,它确实有用sudo bash.然而,当我sudo echo $0,它说bash.

cpu=$(cat /proc/cpuinfo | grep Revision | cut -d' ' -f 2-);
if [[ "a22082" = $cpu || "a02082" = $cpu ]]; then
    echo 'do stuff';
fi
Run Code Online (Sandbox Code Playgroud)

如果我用#!/ bin/sh指定命令解释器,它仍然会失败,但更具体的是#!/ bin/bash.

(现在)知道这[[是特定的bash但是尽管响应它似乎并不像sudo的默认shell是bash.

linux bash shell sudo

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

如何在bash for循环中执行psql命令

我想在bash脚本中执行psql语句并将结果输出到文件.我下面的代码按预期工作:

#!/bin/bash

query="select * from mytable;"

psql <<EOF > output.txt
\timing
$query
EOF
Run Code Online (Sandbox Code Playgroud)

我想运行该psql命令块5次并将结果附加到output.txt.如果我只复制并粘贴它4次,它工作正常,但当我尝试将其放入for循环时,我得到错误.有没有办法做到这一点?

这是我厌倦的循环:

#!/bin/bash

query="select * from mytable;"

for (( i=0; i<5; i++ ))
do
   psql <<EOF > output.txt
   \timing
   $query
   EOF
done
Run Code Online (Sandbox Code Playgroud)

如果我将决赛EOF一直移到左边,它只执行一次,好像循环不存在一样.

linux bash

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

来自Perl脚本的Bash配置文件抛出错误

在获得源代码后调用perl的bash包装函数 .bash_profile

system ('source ~/.bash_profile; osascript -e \'quit app "Chromium"\'');

尽管包装函数被调用并执行得很好,但是我从一个不相关的bash函数中抛出了一个错误:

/Users/me/.bashrc: line 9: syntax error near unexpected token `<'
/Users/me/.bashrc: line 9: `  done < <(find -L "$1" -type f -not -name *.swp -print0 | LC_COLLATE=C sort -dz)'
Run Code Online (Sandbox Code Playgroud)

这是.bashrc文件中的问题功能:

source_dir() {
  while IFS= read -r -d $'\0' file; do
    source_file "$file"
  done < <(find -L "$1" -type f -not -name *.swp -print0 | LC_COLLATE=C sort -dz)
}
Run Code Online (Sandbox Code Playgroud)

仅当通过Perl脚本加载它时,此bash函数直接采购它时不会引发错误。我很好奇为什么。

我正在运行bash版本5.0.2。

bash perl

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

将秒转换为天小时分钟秒

执行代码的以下部分时,出现错误:语法错误:需要操作数(错误标记为“/(60*60*24)”)

# \function  convertsecs2dhms
# \brief     convert seconds to days hour min sec
#####################################################################################################################

function convertsecs2dhms()
{
    ((d=${1}/(60*60*24)))
    ((h=(${1}%(60*60*24))/(60*60)))
    ((m=(${1}%(60*60))/60))
    ((s=${1}%60))
     printValue=`printf "%02d days %02d hours %02d minutes %02d seconds \n" $d $h $m $s`
     printInfo "$printValue"
}
Run Code Online (Sandbox Code Playgroud)

这是我收到的错误:

# \function  convertsecs2dhms
# \brief     convert seconds to days hour min sec
#####################################################################################################################

function convertsecs2dhms()
{
    ((d=${1}/(60*60*24)))
    ((h=(${1}%(60*60*24))/(60*60)))
    ((m=(${1}%(60*60))/60))
    ((s=${1}%60))
     printValue=`printf "%02d days %02d hours %02d minutes %02d seconds \n" $d $h $m $s`
     printInfo "$printValue"
}
Run Code Online (Sandbox Code Playgroud)

bash time sh

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

使用 bash -c 运行命令与不使用 bash -c 运行命令

这两个命令有什么区别?

  1. cat test.txt
  2. bash -c "cat test.txt"

我已经阅读了文档,但没有任何示例来理解它。

bash

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

从内部脚本调用bash代码时出现替换错误

我有一段简单的代码,当我自己运行时,它可以工作,虽然它从文件中调用时不起作用.

代码如下:

for files in *; do echo ${files::10}; done 
Run Code Online (Sandbox Code Playgroud)

当我尝试将其放入文件(例如MyScript.sh)时,我运行以下命令:

sh MyScript.sh
Run Code Online (Sandbox Code Playgroud)

我收到以下错误"MyScript.sh:2:MyScript.sh:Bad substitution"

为什么会这样?怎么解决这个问题?

unix bash

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

如何在 Shell 脚本中访问变量

我目前被困在如何执行以下操作上:

我有一个settings看起来像这样的文件:

USER_ID=12
ROLE=admin
STARTED=10/20/2010
...
Run Code Online (Sandbox Code Playgroud)

我需要访问角色并将角色映射到下面脚本中的变量之一。在我将使用该变量调用打开具有正确名称的文档之后。

测试文件

#!/bin/sh

ADMIN=master_doc
STAFF=staff_doc
GUEST=welcome_doc    

echo "accessing role type"
cd /setting

#open `settings` file to access role?
#call correct service
#chmod 555 master_doc.service 
Run Code Online (Sandbox Code Playgroud)

有没有办法像javascript一样使用bash插入字符串?另外,我猜我需要遍历设置文件才能访问角色?

bash

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

标签 统计

bash ×13

linux ×5

shell ×5

sh ×4

docker ×2

scripting ×2

cmd ×1

command-line-interface ×1

herestring ×1

makefile ×1

perl ×1

sudo ×1

time ×1

unix ×1