#!/bin/bash

jobname="job_201312161447_0003"
jobname_pre=${jobname:0:16}
jobname_post=${jobname:17}

这个bash脚本在ubuntu上给了我糟糕的替换错误。任何帮助都将不胜感激。


当前回答

另外,确保脚本的第一行没有空字符串。

即确保#!/bin/bash是脚本的第一行。

其他回答

另外,确保脚本的第一行没有空字符串。

即确保#!/bin/bash是脚本的第一行。

在我的例子中(在ubuntu 18.04下),我混合了$(${}),工作正常:

BACKUPED_NB=$(ls ${HOST_BACKUP_DIR}*${CONTAINER_NAME}.backup.sql.gz | wc --lines)

完整的例子。

两者- bash或dash -工作,但语法需要:

FILENAME=/my/complex/path/name.ext
NEWNAME=${FILENAME%ext}new

我在bash中使用花括号在表达式中添加了两次美元符号:

cp -r $PROJECT_NAME ${$PROJECT_NAME}2

而不是

cp -r $PROJECT_NAME ${PROJECT_NAME}2

我也有同样的问题。确保你的脚本没有

#!/bin/sh 

在你的脚本顶部。相反,你应该补充

#!/bin/bash