2014-01-13 85 views
5

OSX的終端可以獲取字符串的長度嗎?例如:OSX終端字符串長度

$ echo "foo".length 

或者

$ echo (cat file.txt).length 
+0

'echo $ {「foo」}'或者'echo「foo」| wc -c' – gtgaxiola

+0

因此'echo $ {「foo」}''返回了'zsh:壞替換'和'echo「foo」| wc -c'返回'4'! –

+0

有趣....回聲「富」| wc -c在Linux上工作(目前沒有終端測試) – gtgaxiola

回答

11
echo "foo" | wc -c 

這個計算標準輸入的字符數。請注意,這將返回4,因爲echo在最後添加了換行符。使用printfecho -n來避免添加換行符。

printf "foo" | wc -c 
+0

'printf「foo」| wc -c'確實起作用,但我不確定爲什麼響應有空格(看起來像兩個選項卡,然後是數字)而不是數字。 –

+0

這很奇怪。在我的Ubuntu系統上'wc -c'只需打印'3',不需要額外的空格。 –

+0

我在有趣的時間是OSX的愛情風暴 –

1

嘗試這樣的:

var=hello; echo ${#var} 
+0

我該怎麼做沒有分配一個var? –

0

EXPR長度可用於

hello="world" 
expr length $hello 
5 

或只是

expr length "hello" 
5 
+0

再次,沒有辦法做到這一點,而不分配一個var? –

0

建議的解決方案將實際長度加1。在我看來,這是一個更好的解決方案。

將此添加到您的.zshrc或.bash_profile中

lenFunc() { 
    echo ${#1} 
} 

alias len=lenFunc 

然後

len foo 
// output 3 
0

從OS X的終端,你也可以用斯威夫特REPL這樣做:

user_name$ swift 
Welcome to Apple Swift version 3.1 (swiftlang-802.0.53 clang-802.0.42). 
Type :help for assistance. 
    1> print("foo".characters.count) 
3 
    2> 

在Swift 4中它將是print("foo".count)