簡體   English   中英

如何從魚殼中的命令替換輸出中捕獲換行符?

[英]How to capture newlines from command substitution output in fish shell?

在bash中,換行符通過命令替換來保留:

$ TEST="$(echo 'a
  b
  c
  ')" && echo "$TEST"
# →
a
b
c

但是,當我嘗試在魚殼中執行相同操作時,換行符將轉換為空格:

$ set TEST (echo "a
  b
  c
  "); and echo "$TEST"
# →
a b c

如何使魚將換行符另存為換行符?

關於魚類用戶郵件列表的確切問題:關於魚類用戶郵件列表的討論: http : //sourceforge.net/p/fish/mailman/message/33644843/

您必須修改IFS變量才能執行此操作:

$ set out (seq 5)
$ echo "$out"
1 2 3 4 5

$ set oldIFS "$IFS"
$ set IFS ""
$ set out (seq 5)
$ echo "$out"
1
2
3
4
5
$ set IFS "$oldIFS"

從概念上講,它們不會轉換為空格:您將獲得列表!

> echo -e "1\n2\n3" > foo
> cat foo
1
2
3
> set myFoo (cat foo)
> echo $myFoo
1 2 3
> echo $myFoo[0..2]
1 2

因此,我們將可用的機械用於清單 例如, 使用分隔符連接 (請注意額外的退格鍵以消除不希望有的空格):

> echo {\b$myFoo}\n
1
2
3
 # extra newline here

這不理想; 字符串會更好:

> string join \n $myFoo
1
2
3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM