标签: syntax

意外标记附近的语法错误`do

我在 .sh 中使用 for 循环时出现“接近意外标记‘do’的语法错误”错误。这是代码:

#!/bin/sh

# some code

for flux in $(ls -d /home/eai/*/*/*) ; do
  FICHIER=$(ls -p -tr $flux | grep -v / | head -n 1)
  if [[ $FICHIER ]] ; then
     # some code
  fi
done
Run Code Online (Sandbox Code Playgroud)

执行脚本的不同方式,以及输出:

1) sh script.sh 或 bash script.sh

'cript_1409.sh: line 24: syntax error near unexpected token `do
'cript_1409.sh: line 24: `for flux in $(ls -d /home/eai/*/*/*); do
Run Code Online (Sandbox Code Playgroud)

2) ./script.sh

-bash: ./script_1409.sh: /bin/sh^M: bad interpreter: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我试过的:

1) …

shell scripting shell-script syntax

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

通过 shell 脚本运行 R 脚本。意外标记“(”附近的语法错误

我目前正在尝试通过 shell 脚本运行 R 脚本。

这里是 R 脚本:

test = rnorm(1:100, 1000)
write.csv(test, 'test.csv')
Run Code Online (Sandbox Code Playgroud)

这里是调用 R 的 bash 脚本:

#!/bin/bash -l
#SBATCH --partition=compute
#SBATCH --job-name=test
#SBATCH --mail-type=ALL
#SBATCH --mail-user=myemail@blabla.com
#SBATCH --time=00:10:00
#SBATCH --nodes=1
#SBATCH --tasks-per-node=12
#SBATCH --account=myaccount
module purge
module load R
${HOME}/test.R
Run Code Online (Sandbox Code Playgroud)

我想我做的一切都正确,但输出返回以下错误:

/mydirectory/test.R: line 3: syntax error near unexpected token `('
/mydirectory/test.R: line 3: `test = rnorm(1:100, 1000)'
Run Code Online (Sandbox Code Playgroud)

为什么我收到此错误?

bash shell-script error-handling r syntax

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

您如何解释这个复杂的手册页语法?

我正在手册页上阅读此内容:

[-n number-to-stat[:max-size[:min-size][:num-directories[:chunk-size]]]]
Run Code Online (Sandbox Code Playgroud)

我将其解释为-n可选,但如何指定num-directories

最好我不想为number-to-stat, max-size, min-size和输入任何内容chunk-size,只需给出一个值num-directories- 我该如何表达?

man options syntax

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

如果有什么区别![[ foo ]] 并且如果 [[ ! foo ]] 在 Bash 中?

我知道这!用于否定 Bash 中的 if 条件,但我刚刚看到采用以下格式的代码:

if ! [[ CONDITION ]]; then
    SOMETHING
fi
Run Code Online (Sandbox Code Playgroud)

这种格式和下面的格式有区别吗?

if [[ ! CONDITION ]]; then
    SOMETHING
fi
Run Code Online (Sandbox Code Playgroud)

我试过谷歌,但还没有找到任何关于以前的语法。

bash shell-script syntax

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

bash 找不到右括号?

我正在编写一个 bash 脚本来在 Synology 机器上构建 MariaDB 实例。当我运行它时,它可以工作,但出现错误:

admin@synology:/volume1/@appstore/MariaDB10/usr/local/bip$ ./mysql_backup
./mysql_backup: line 7: [: missing `]'

admin@synology:/volume1/@appstore/MariaDB10/usr/local/bip$ head -10 mysql_backup
#!/bin/bash

DBBACKUP=/volume1/remotebackup/mnt/devmysql.sql.gz
ERRFILE=/volume1/remotebackup/mnt/devmysqlerr.log


if [ -f "${DBBACKUP}.prev" && ! -f "${ERRFILE}" ] ; then
        rm -f "${DBBACKUP}.prev"
        mv "${DBBACKUP}" "${DBBACKUP}.prev"
fi
Run Code Online (Sandbox Code Playgroud)

添加一个空格和第二个关闭']',我仍然得到同样的错误。嵌套 'if' 语句提供了一个解决方案,但令我烦恼的是有些事情并不像我预期的那样。

bash test syntax

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

命令 grep 中的 -e 选项

我在阅读grep手册时遇到了一个问题,提到它的-e选项,
它说:

-e pattern, --regexp=pattern
         Specify a pattern used during the search of the input: an input
         line is selected if it matches any of the specified patterns.
         This option is most useful when multiple -e options are used to
         specify multiple patterns, or when a pattern begins with a dash
         (`-').
Run Code Online (Sandbox Code Playgroud)

我对e缩写是什么感到困惑?谷歌搜索不到答案。
此外,很容易理解的是

“当使用多个 -e 选项指定多个模式时,此选项最有用”

但是,这是什么意思?

"或者当模式以破折号 (`-') 开头时。"

你能举个例子吗?

grep syntax

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

对 bash shell 脚本语言的更改?

几年前我写了一个多部分脚本,它调用 rsync 并且它一直有效。经过一年的无用和大量 debian apt-get 更新,现在脚本停止工作。

Main2Network1.sh 调用 Main2Network2 有第 3 部分和第 4 部分,但脚本 Main2Network1.sh 第 27 行具有:

 Main2Network1.sh: [[ not found 
Run Code Online (Sandbox Code Playgroud)

第 27 行是

if [[ -z $VAR ]];
Run Code Online (Sandbox Code Playgroud)

当我编写脚本时,脚本 [[ ]] 是 if 然后只需按回车键即可工作的必要条件,即/sf/answers/1414134431/

也许有人可以告诉我他们是否在我的第 27 行左右的代码中看到任何最近弃用的语法(这就是我在运行脚本时遇到错误的地方)谢谢大家

主2网络1.sh

 #!/bin/bash
#renames files changed files on NETWORK to _day_mnth_yr_NETWORK1 then puts maincomp version of file on network.
#THIS SHOULD BE PUT TO AUTOMATICALLY RUN AFTER TRAVEL2NETWORK SYNC
#info=NAME1 lists just changed Files/Dirs, -b must preceed --suffix,
# this will …
Run Code Online (Sandbox Code Playgroud)

scripting bash shell-script syntax

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

;ls bash: 意外标记附近的语法错误`;'

打字后 ;ls

我得到了这个回报 - bash: syntax error near unexpected token `;'

我该如何解决?

shell bash syntax

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

条件表达式的语法与正则表达式的比较

我尝试在我的 Ubuntu 机器上执行下面的代码,但它一直显示“条件表达式中的语法错误”和“'0-9'附近的语法错误”,你能告诉我为什么吗?

while ! [[ $num =~ ^[ 0-9 ] +$ && $num = 0 ]] ; do 
Run Code Online (Sandbox Code Playgroud)

shell bash syntax

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

$a 和 -e 在 sed 中是什么意思?

[desktop ~]$ cat sa
sanmesh
shammas
sujil
givin
nepo
bijal

[desktop ~]$ sed -i -e '1i Header' -e '$a Trailor' sa

[desktop ~]$ cat sa
Header
sanmesh
shammas
sujil
givin
nepo
bijal
Trailor
Run Code Online (Sandbox Code Playgroud)

linux sed syntax

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

标签 统计

syntax ×10

bash ×6

shell-script ×4

shell ×3

scripting ×2

error-handling ×1

grep ×1

linux ×1

man ×1

options ×1

r ×1

sed ×1

test ×1