iT邦幫忙

0

Bash script 指派運算結果給變數

  • 分享至 

  • xImage

$>ls -s l grep movie 會得到 movie.json
但是 ls -s | grep movie | test
在echo $test 確出現Him
請問該如何指派運算結果給變數,謝謝

jeffeux iT邦新手 4 級 ‧ 2023-03-14 07:21:51 檢舉
test 在 bash script 本來就是一個指令了,而且我幾乎沒看過 pipe 給 test 的用法,基本上 test 就等於 [
如果是要指派給 test 這個變數,@echochio 說的是對的

但問題是請問您想做什麼呢?
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
echochio
iT邦高手 1 級 ‧ 2023-03-13 17:22:04

不知你最後要的目的是什麼 .....
這是你要的嗎?

test=`ls -s |grep movie`
echo $test

變數 $test 就是你要找的 movie.json

運用還有 直接 cat 出來

cat $(ls -s |grep movie|awk '{print $2}') 
看更多先前的回應...收起先前的回應...

我想做的是把batch script 轉成bash.sh
for /f "tokens=1" %%y in ('dir /B ^| findstr "mactohost"') do (
set CN=%%y
)
這會只列出檔案 然後把有mactohost的檔名(d6mactohost)指派給y 然後把y當值指派給CN 最後CN會等於d6mactohost
我把dir /B ^| findstr "mactohost 改成 ls -s | grep mactohost 不知正不正確
然後就是要把執行結果指派給變數 謝謝

jeffeux iT邦新手 4 級 ‧ 2023-03-14 07:20:02 檢舉

等等⋯⋯ dir 是 batch 的語法(Windows),但 ls 是 bash 的語法(Linux & Mac),兩者完全無關啊⋯⋯

jeffeux iT邦新手 4 級 ‧ 2023-03-14 07:29:13 檢舉

如果你要的是指派給變數
用 bash 是 變數名稱=$(某項指令) 這樣的語法

因此翻過來可能是

#!/bin/bash
# 剛剛跟 ChatGPT double check 過了,希望是對的

# Find file or folder containing "mactohost" in its name and store its name in variable "CN"
# 以下是翻譯
# batch: `('dir /B ^| findstr "mactohost"')`
# bash: `$(ls -1 | grep "mactohost")`
for item in $(ls -1 | grep "mactohost"); do
    # 這行是翻譯 /f "tokens=1",但我手邊沒 Windows 電腦我也沒辦法確認
    y=$(echo "item" | awk '{print $1}')
    # 然後我不懂的是,這邊 y 跟 CN 會永遠一樣,感覺有點多餘
    CN="$y"
done
jeffeux iT邦新手 4 級 ‧ 2023-03-14 07:31:20 檢舉

方便的話請您解釋一下 batch script 本來跑出來的樣子嗎?謝謝
(不過通常能用 batch 的不太好用 bash,能用 bash 的也用不了 batch,好奇一下是何種實際場景會用到⋯⋯系統移植?)

我要發表回答

立即登入回答