Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2912

シェルスクリプトで部分文字列の取得時に「substring expression < 0」と出るときの対処

$
0
0

ファイル名から.mdの拡張子のみ除外したいと思い、${str:start:end}の構文で以下のように実現しようと思った。

#!/bin/bash

str="hello.md"
echo ${str:0:-3}

この処理は「文字列の先頭から終端の3文字前までのstrを出力する」であるため、helloと表示されるのが望ましい。

しかし、これを実行すると-2: substring expression < 0とエラーが出てしまう。

これを解決するには、変数に格納された文字列の長さを表す#を利用し、以下のように修正すると正常に動作する。

#!/bin/bash

str="hello.md"
echo ${str:0:${#str}-3}

参考


Viewing all articles
Browse latest Browse all 2912

Trending Articles