Bash
bash - 通過變數將空行添加到heredoc
如果我在腳本中使用這種場景:
#!/bin/bash addvline=$(if [ "$1" ]; then echo "$1"; echo; fi) cat << EOF this is the first line $addvline this is the last line EOF
如果
$1
是 emty 我得到一個空行。但是如何在
$1
它不是空的情況下添加一個空行?因此,在執行腳本的情況下,例如:
bash script.sh hello
我會得到:
this is the first line hello this is the last line
echo
我試圖通過在 中使用第二個來實現這一點if statement
,但換行符沒有通過。
讓我們
if
決定將您的變數內容設置為不使用命令替換。if [ "$1" ]; then addvline=$1$'\n'; fi
然後:
#!/bin/bash if [ "$1" ]; then addvline=$1$'\n'; fi cat << EOF this is the first line $addvline this is the last line EOF
有幾種解決方案。首先,讓我們創建一個包含稍後使用的換行符的變數(在 bash 中):
nl=$'\n'
那麼它可以用於構造要列印的變數:
#!/bin/bash nl=$'\n' if [ "$1" ]; then addvline="$1$nl" else addvline="" fi cat << EOF this is the first line $addvline this is the last line EOF
if
或者,如果您使用正確的參數擴展,您可以完全避免:#!/bin/bash nl=$'\n' addvline="${1:+$1$nl}" cat << EOF this is the first line $addvline this is the last line EOF
或者,在一個更簡單的程式碼中:
#!/bin/bash nl=$'\n' cat << EOF this is the first line ${1:+$1$nl} this is the last line EOF