Bash

Bash 字元串操作和賦值

  • April 26, 2019

如何操作字元串,然後將其分配給變數?

這個字元串操作按我的意願工作:

echo ${dir:2:5} | sed 's/[.]$//';

但:

var x = ${dir:2:5} | sed 's/[.]$//';

x = ${dir:2:5} | sed 's/[.]$//';

x = $(${dir:2:5} | sed 's/[.]$//');

都會產生類似於以下的錯誤:

script.sh: line 2: mystring: command not found
script.sh: line 2: x: command not found
script.sh: line 2: var: command not found

mv我的意圖是在命令中使用這個變數。

mv /var/$x/test/$x.mp4 /home/me/

嘗試:

x=$(echo "${dir:2:5}" | sed 's/\.$//')
  1. 聲明變數時必須省略空格 ( x=value)
  2. $dir是一個變數。要列印您將echo "${dir:2:5}" | sed 's/\.$//'在終端中使用的命令的輸出。要將值保存在變數x中,請使用命令替換將值替換為命令$( )

補充弗雷迪的回答sed也可以用字元串bash替換來替換管道。例子:

x=abcd.efghijk ; y="${x:2:5}" ; echo "$y"  "${y/.}"

輸出:

cd.ef cdef

引用自:https://unix.stackexchange.com/questions/515462