🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Q&A

解決済

3回答

1576閲覧

シェルスクリプト コマンドライン引数で渡した$1で echo {1..$1} を表示したい

kousuke24

総合スコア29

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

0グッド

1クリップ

投稿2019/12/27 03:44

編集2019/12/27 04:28

シェルスクリプトでコマンドライン引数を渡し、echo suji{1..$1} で「suji1 suji2 suji3」のように表示したいのですが、文字列として評価されてしまいうまく実行できません。

shell.sh

#!usr/bin/bash echo suji{1..$1}

実行結果

$ bash shell.sh 5 suji{1..5}

実現したい結果

$ bash shell.sh 5 suji1 suji2 suji3 suji4 suji5

やってみたこと
・{1..$1} を ${1..$1} で実行
・{1..$1} を {1.."$1"} で実行
・{1..$1} を {1..${1}} で実行
・{1..$1} を {1.."${1}"} で実行

上記の方法は全て「suji{1..5}」という実行結果になってしまいました。コマンドライン引数で渡した数で1から5までを「suji1 suji2 suji3」といった感じで表示したいです。ご教授頂ければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

$ awk -v A=5 'BEGIN{for(i=1;i<=A;i++) printf "suji%d ", i; print ""}' suji1 suji2 suji3 suji4 suji5

投稿2019/12/27 04:45

KojiDoi

総合スコア13692

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

bash

1#!/bin/bash 2 3bash -c "echo suji{1..$1}"

投稿2019/12/27 04:56

scsi

総合スコア2840

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

bash だけでやるなら、

bash

1eval "echo suji{1..$1}"

投稿2019/12/27 04:53

kit494way

総合スコア317

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Y.H.

2019/12/27 05:50

引数に \`なんか実行しちゃいけないコマンド}\` とか指定すると幸せになれますね :-)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問