Bash

如何在變數中提取文件名並檢查返回值

  • October 3, 2018

我正在嘗試編寫一個小腳本來安裝最新的 nodeJS 版本。我是這樣開始的:

NODE="$(curl -sL https://nodejs.org/dist/latest | grep 'armv6l.tar.gz' | cut -d'"' -f2)" &&
wget https://nodejs.org/dist/latest/$NODE &&
tar -xzf $NODE

對於接下來的步驟,我需要做類似的事情node-v8.12.0-linux-armv6l/bin/node -v,如果這返回一個我想做的值

$ cd node-v8.12.0-linux-armv6l/
$ sudo cp -R * /usr/local/

我的問題是,它$NODE具有完整的文件名 - 包括文件副檔名。但是對於我需要替換的命令node-v8.12.0-linux-armv6l。另外我不知道如何檢查返回的版本值。

試試下面的程式碼,

#!/bin/bash
SOF_PATH=/opt

NODE="$(curl -sL https://nodejs.org/dist/latest | grep 'armv6l.tar.gz' | cut -d'"' -f2)"
if [ ! -z "$NODE" ]; then
   cd $SOF_PATH
   /usr/bin/wget "https://nodejs.org/dist/latest/$NODE" >/dev/null 2>&1
   /bin/tar -xzf $NODE
   NODE_APP=${NODE%.tar.gz}
   cd $NODE_APP/bin
   NODE_VERSION=`node -v`
   echo "$NODE_VERSION"
   cd ..
   sudo cp -R * /usr/local/
fi

引用自:https://unix.stackexchange.com/questions/472952