2017-08-15 74 views
0

我一直在試圖編寫一個bash腳本。它的一部分應該沒有任何東西來替換一部分字符串。用bash腳本中的變量替換其他文本的子字符串

這裏就是我想要做的

$dbname=$1 
$dbNameActual="${$dbname/.sql/}" 

date 
echo $dbNameActual 

我嘗試了一些從堆棧建議。但沒有得到。我嘗試添加sed,但這似乎不起作用。

的想法是,我有一個腳本,它需要在數據庫導入文件名,說db250317.sql和輸出db250317

我正在運行Ubuntu 16.04 LTS

回答

3

您不要在表達式中輸入$兩次,也不要在要分配的變量(這不是PHP或Perl)之前放入$。它應該是:

dbNameActual="${dbname/.sql/}" 

另外,如果你想刪除的東西總是在最後,你可以使用%將其刪除:

dbNameActual="${dbname%.sql}" 

還記得引用變量時你稍後使用它,以防文件名包含空格。你幾乎總是應該引用變量,除非你有特殊的理由不要。

+0

也許還會提到圍繞論點引用回聲; 'echo「$ dbNameActual」'(除非你特別需要shell對值執行空格標記和通配符擴展;請參閱https://stackoverflow.com/questions/10067266/when-to-wrap-quotes-around-a-殼變量) – tripleee

相關問題