4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Posted at

ファイル名から.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}

参考

4
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?