将 bash 脚本压缩到一行

Compress bash script to one line

我正在尝试获取 GCP 区域信息,并基于该信息选择一个 GCS 存储桶以从中提取数据。脚本看起来像这样。

#!/bin/bash
set -xe

GCP_REGION=$(curl -sf -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/zone | cut -d/ -f 4 | sed 's/.\{2\}$//')
BUCKET_NAME="foo-bar-"

case $GCP_REGION in
  us*)      BUCKET_NAME+="us";;
  asia*)    BUCKET_NAME+="asia";;
  europe*)  BUCKET_NAME+="eu";;
  *)        echo -n "unknown GCP region"; exit 1;;
esac

echo -n $BUCKET_NAME

有没有办法把它压缩成一行语句?

摆脱 shebang,在每个 non-empty 行末尾添加一个 ;,但不以 ;;in 结尾,然后加入所有行在一起:

set -xe; GCP_REGION=$(curl -sf -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/zone | cut -d/ -f 4 | sed 's/.\{2\}$//'); BUCKET_NAME="foo-bar-"; case $GCP_REGION in us*)      BUCKET_NAME+="us";; asia*)    BUCKET_NAME+="asia";; europe*)  BUCKET_NAME+="eu";; *)        echo -n "unknown GCP region"; exit 1;; esac; echo -n $BUCKET_NAME;

我们不得不同意在“看起来整洁”方面存在分歧:-)。祝你好运!