我正在寻找变量中的特定行,例如
echo "$CodeDesc"
0x19 ERASE(6)
0x1A MODE SENSE(6)
0x1B START STOP UNIT
0x1C RECEIVE DIAGNOSTIC RESULTS
0x1D SEND DIAGNOSTIC
0x1E PREVENT ALLOW MEDIUM REMOVAL
0x23 READ FORMAT CAPACITIES
0x24 SET WINDOW
Run Code Online (Sandbox Code Playgroud)
例如,如果我只是在寻找“MODE SENSE(6)”,我将使用 grep 和 awk(也尝试使用 sed)
desc="$( grep "0x1A" <<< "$CodeDesc" | awk '{print substr($0, index($0,$2))}' )"
Run Code Online (Sandbox Code Playgroud)
这确实给了我正确的字符串,即“MODE SENSE(6)”,但是当我回显时,它与某些字符串重叠:
echo "DESC: \"$desc\""
Run Code Online (Sandbox Code Playgroud)
给我:
"SC:"MODE SENSE(6)
Run Code Online (Sandbox Code Playgroud)
请注意,\" 已移至开头并且缺少 DE。
稍后我还将打印同一个变量和另一个变量:
echo -e "${desc}${code}"
Run Code Online (Sandbox Code Playgroud)
我希望这个打印:
MORE SENSE(6) 0x1A 1
Run Code Online (Sandbox Code Playgroud)
但相反,我得到:
0x1a 1NSE(6)
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚这是怎么回事,任何帮助将不胜感激。
bash ×1