내가 최근 쉘에서 코딩에 새로운 오전는 zsh
(bash
& zsh
사이의 구문 차이가 있는지 확실하지 않습니다) 스위치를 만들어 나는 인쇄하는 함수를 작성하는 것을 시도하고있다 내 컴퓨터에 패키지 & 툴링의 버전. 아래는 제가 지금까지 가지고있는 것입니다. foo --version
의 출력이 주석 처리되었습니다.제거/bash는
get_versions() {
local brew_version=$(brew --version 2>/dev/null)
# Homebrew 1.3.6
# Homebrew/homebrew-core (git revision 8b18; last commit 2017-11-10)
local create_react_app_version=$(create-react-app --version 2>/dev/null) # 1.4.3
local elixir_version=$(elixir --version 2>/dev/null)
# Erlang/OTP 20 [erts-9.1.3] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
#
# Elixir 1.5.2
local git_version=$(git --version 2>/dev/null) # git version 2.15.0
local go_version=$(go version 2>/dev/null) # go version go1.9.2 darwin/amd64
local hugo_version=$(hugo version 2>/dev/null) # Hugo Static Site Generator v0.30.2 darwin/amd64 BuildDate: 2017-11-10T10:06:36-06:00
local mongo_version=$(mongo --version 2>/dev/null)
# MongoDB shell version v3.4.10
# git version: 078f28920cb24de0dd479b5ea6c66c644f6326e9
# OpenSSL version: OpenSSL 1.0.2m 2 Nov 2017
# allocator: system
# modules: none
# build environment:
# distarch: x86_64
# target_arch: x86_64
local node_version=$(node --version 2>/dev/null) # v9.1.0
local now_version=$(now --version 2>/dev/null) # 8.4.0
local npm_version=$(npm --version 2>/dev/null) # 5.5.1
local nvm_version=$(nvm --version 2>/dev/null) # 0.33.6
local psql_version=$(psql --version 2>/dev/null) # psql (PostgreSQL) 10.1
local yarn_version=$(yarn --version 2>/dev/null) # 1.3.2
local zsh_version=$(zsh --version 2>/dev/null) # zsh 5.4.2 (x86_64-apple-darwin17.0.0)
# echo "brew:----------------- ${brew_version:9}"
echo "create-react-app:----- ${create_react_app_version}"
echo "elixir:--------------- ${elixir_version:130}"
echo "git:------------------ ${git_version:12}"
# echo "go:------------------- ${go_version:13}"
# echo "hugo:----------------- ${hugo_version:28}"
# echo "mongo:---------------- ${mongo_version:23}"
echo "node:----------------- ${node_version:1}"
echo "now:------------------ ${now_version}"
echo "npm:------------------ ${npm_version}"
echo "nvm:------------------ ${nvm_version}"
echo "psql:----------------- ${psql_version:18}"
echo "yarn:----------------- ${yarn_version}"
# echo "zsh:------------------ ${zsh_version:4}"
}
제 질문은 출력에 원하지 않는 후행 문자열을 처리하는 방법에 관한 것입니다. 나는 정수로 :
을 사용하는 것이 JavaScript의 substring()
처럼 작용하여 문자열의 지정된 색인에서 시작하는 결과를 산출한다는 것을 알아 냈습니다.
예를 들어 mongo
은 출력이 매우 상세합니다. 현재 mongo_version:23
을 호출하면 버전 번호가 표시되지만 맞춤 출력에는 원하지 않는 문자열이 많이 남습니다.
첨부 된 이미지는 후행 문자열이있는 변수가있을 때 현재 출력이 어떻게 보이는지 보여줍니다. 당신이 ${var:offset}
구문을 사용으로 확인하는 경우
정말 멋지 네요. 그래서 그것은 또한 JS의'substring' 메소드로 동작하여 시작과 끝 인덱스 값을 줄 수 있습니까? 평행선을 그려서 물건을 기억하는 데 도움이됩니다. – rockchalkwushock
@rockchalkwushock 시작 인덱스 값과 길이를 취합니다. 즉, 변수를 0부터 시작하는 문자열로 처리하는 경우 종료 인덱스 값은 'offset + length - 1'입니다. –
도움과 설명에 대해 대단히 감사합니다! – rockchalkwushock